//1、真正需要用到变量时再做定义，否则中途返回或退出的情况时你将多处理无用变量的构造和析构开销
//2、尽量使用初始化序列值而不是使用默认构造+赋值构造

//3、关乎循环内外声明的问题：

#include <iostream>

void test()
{
    //A   :1个构造+1个析构+n个赋值
    std::string s1;
    for (size_t i = 0; i < 1000; i++)
    {
        //处理s1
    }
    

    //B   :n个构造+n个析构
    for (size_t i = 0; i < 1000; i++)
    {
        std::string s2;
        //处理s1
    }
    

    //如果赋值开销大于构造+析构，选B，否则选A,
    //如果对开销不是很在意，B的代码清晰度高于A
}